﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using System.Data;
using MySql.Data.MySqlClient;
using MySql.Data;
using BE;
using Mapeo;
using NHibernate;
using NHibernate.Criterion;

namespace DAL
{
    public class Alumno_DAL : Controlador
    {

        public DataTable DATA_ESPECIALIDAD_ListaEspecialidades()
        {
            //Lista todas las especialidades de la tabla data_notas

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_Especialidad_Listar";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

            return data;

        }

        public List<Especialidad> DATA_ESPECIALIDAD_ListaEspecialidades_H()
        {
            try
            {
                using (ISession Sesion = m_SessionFactory.OpenSession())
                {
                    ICriteria criteria = Sesion.CreateCriteria("Especialidad")
                        .AddOrder(Order.Asc("ORDEN"));
                    criteria.SetMaxResults(50);
                    List<Especialidad> listado = (List<Especialidad>)criteria.List<Especialidad>();
                    return listado;
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

        public DataTable DATA_PERIODO_listaxSemestre(string semestre)
        {
            //Lista todas las especialidades de la tabla data_notas

            Conexion cadena = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();

            conexion.ConnectionString = cadena.ConexionCampusVirtual();

            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_PERIODO_ListaxSemestre";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_Semestre", semestre);
                Comnota3.Connection = conexion;


                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);

                

            }
            catch (Exception ex)
            {

            }

            finally
            {
                conexion.Close();
            }

            return data;



        }



        public DataTable ObtenerListaAlumnosEspecialidad(string dni, string codigo)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    SqlCmd.CommandText = "sp_Obtener_ListaAlumnosEspecialidad";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@in_DNI", dni);
                    SqlCmd.Parameters.AddWithValue("@in_NombreCodigo", codigo);
                    SqlCmd.ExecuteNonQuery();
                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        
        }


        public DataTable DATA_MAESTRO1_ListaAlumnos(string dni,string codigo)
        {
            //Lista todas las especialidades de la tabla data_notas

            Conexion cadena = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();

            conexion.ConnectionString = cadena.ConexionCampusVirtual();

            try
            {
                conexion.Open();
                //Comnota3.CommandText = "SP_DATA_MAESTRO1_ListaAlumnos";
                Comnota3.CommandText = "SP_DATA_MAESTRO1_ListaAlumnos2";

                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_DNI", dni);
                Comnota3.Parameters.AddWithValue("@in_NombreCodigo", codigo);
                

                Comnota3.Connection = conexion;


                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);



            }
            catch (Exception ex)
            {

            }

            finally
            {
                conexion.Close();
            }

            return data;



        }

        public DataTable DATA_MAESTRO_listaporCodigo(string codigo)
        {
            //Lista todas las especialidades de la tabla data_notas

            Conexion cadena = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();

            conexion.ConnectionString = cadena.ConexionCampusVirtual();

            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MAESTRO_listaporCodigo";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_codalumno", codigo);                


                Comnota3.Connection = conexion;


                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);



            }
            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                conexion.Close();
            }

            return data;



        }


        public DataTable data_Matric1_ListaporCodigo(string codigo)
        {
            //Lista todas las especialidades de la tabla data_notas

            Conexion cadena = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();

            conexion.ConnectionString = cadena.ConexionCampusVirtual();

            try
            {
                conexion.Open();
                Comnota3.CommandText = "data_Matric1_ListaporCodigo";
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Parameters.AddWithValue("@in_cod_alumno", codigo);


                Comnota3.Connection = conexion;


                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);



            }
            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                conexion.Close();
            }

            return data;



        }


        public void DATA_MAESTRO1_UPDATE(Alumno_BE det)
        {
            
            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand cmd = new MySqlCommand();
            MySqlConnection conexion = new MySqlConnection();

            cadena = conex.ConexionCampusVirtual();
            conexion.ConnectionString = cadena;

            try
            {
                conexion.Open();
                
                cmd.CommandText = "sp_DATA_MAESTRO1_UPDATE";
                cmd.Connection = conexion;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@in_Cod_Alumno", det.COD_ALUMNO);
                cmd.Parameters.AddWithValue("@in_TipoIngreso", det.TIPING);
                cmd.Parameters.AddWithValue("@in_ApellidoPaterno", det.APEPAT);
                cmd.Parameters.AddWithValue("@in_ApellidoMaterno", det.APEMAT);
                cmd.Parameters.AddWithValue("@in_Nombres", det.NOMBRE);
                cmd.Parameters.AddWithValue("@in_Especialidad", det.COD_ESPEC);
                cmd.Parameters.AddWithValue("@in_email", det.EMAIL);
                cmd.Parameters.AddWithValue("@in_Sexo", det.SEXO);
                cmd.Parameters.AddWithValue("@in_inicio_Curricula", det.InicioCurricula);
                cmd.Parameters.AddWithValue("@in_EstadoCivil", det.EstadoCivil);
                cmd.Parameters.AddWithValue("@in_EstadoAlumno", det.EstadoAlumno);
                cmd.Parameters.AddWithValue("@in_DireccionResidencia", det.DIRECC); // residencia donde vive actualmente
                cmd.Parameters.AddWithValue("@in_Distrito", det.DISTRI);
                cmd.Parameters.AddWithValue("@in_telefono", det.TELEFO);
                cmd.Parameters.AddWithValue("@in_PartidaNacimiento", det.PartidaNacimiento);
                cmd.Parameters.AddWithValue("@in_dni", det.DNI);
                cmd.Parameters.AddWithValue("@in_Fecha_nacimiento", det.FECNAC);
                cmd.Parameters.AddWithValue("@in_LugarNacimiento", det.LUGNAC);
                cmd.Parameters.AddWithValue("@in_PadreNombre", det.PADNOM);
                cmd.Parameters.AddWithValue("@in_PadreOcupacion", det.PADOCU);
                cmd.Parameters.AddWithValue("@in_PadreDireccion", det.PADDIR);

                cmd.Parameters.AddWithValue("@in_MadreNombre", det.MADNOM);
                cmd.Parameters.AddWithValue("@in_MadreOcupacion", det.MADOCU);
                cmd.Parameters.AddWithValue("@in_MadreDireccion", det.MADDIR);
                cmd.Parameters.AddWithValue("@in_ApoderadoNombre", det.APONOM);
                cmd.Parameters.AddWithValue("@in_ApoderadoOcupacion", det.APOOCU);
                cmd.Parameters.AddWithValue("@in_ApoderadoDireccion", det.APODIR);
                cmd.Parameters.AddWithValue("@in_celular", det.CELULARALUMNO);
                cmd.Parameters.AddWithValue("@in_TelefonoPadre", det.Telefono_Padre);
                cmd.Parameters.AddWithValue("@in_TelefonoMadre", det.Telefono_Madre);
                cmd.Parameters.AddWithValue("@in_TelefonoApoderado", det.Telefono_Apoderado);
                cmd.Parameters.AddWithValue("@in_Id_Departamento_Nacimiento", det.Id_Departamento_Nacimiento);
                cmd.Parameters.AddWithValue("@in_Id_Provincia_Nacimiento", det.Id_Provincia_Nacimiento);
                cmd.Parameters.AddWithValue("@in_Id_Distrito_Nacimiento", det.Id_Distrito_Nacimiento);
                cmd.Parameters.AddWithValue("@in_Direccion_Nacimiento", det.Direccion_Nacimiento);
                cmd.Parameters.AddWithValue("@in_Id_Departamento_Colegio", det.Id_Departamento_Colegio);
                cmd.Parameters.AddWithValue("@in_Id_Provincia_Colegio", det.Id_Provincia_Colegio);
                cmd.Parameters.AddWithValue("@in_Id_Distrito_Colegio", det.Id_Distrito_Colegio);
                cmd.Parameters.AddWithValue("@in_Direccion_Colegio", det.Direccion_Colegio);
                cmd.Parameters.AddWithValue("@in_Id_Departamento_Residencia", det.Id_Departamento_Residencia);
                cmd.Parameters.AddWithValue("@in_Provincia_Residencia", det.Id_Provincia_Residencia);
                cmd.Parameters.AddWithValue("@in_Distrito_Residencia", det.Id_Distrito_Residencia);
                cmd.Parameters.AddWithValue("@in_Modalidad", det.Modalidad);
                cmd.Parameters.AddWithValue("@in_Observacion", det.Observacion);
                cmd.Parameters.AddWithValue("@in_Fecha_Registro", det.Fecha_Registro);
                cmd.Parameters.AddWithValue("@in_Usuario_Registro", det.Usuario_Registro);
                cmd.Parameters.AddWithValue("@in_PadrePaterno", det.PadrePaterno);
                cmd.Parameters.AddWithValue("@in_PadreMaterno", det.PadreMaterno);
                cmd.Parameters.AddWithValue("@in_MadrePaterno", det.MadrePaterno);
                cmd.Parameters.AddWithValue("@in_MadreMaterno", det.MadreMaterno);
                cmd.Parameters.AddWithValue("@in_ApoderadoPaterno", det.ApoderadoPaterno);
                cmd.Parameters.AddWithValue("@in_ApoderadoMaterno", det.ApoderadoMaterno);

 
                    
                cmd.CommandTimeout = 3600;
                cmd.ExecuteNonQuery();



            }

            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                conexion.Close();
                cmd.Dispose();
            }




        }




        public DataTable DATA_MATRIC1_ListaxSemestreCicloEspecialidad(String semestre,String ciclo,String especialidad)
        {
            //Lista todas las nómina por especialidadciclosemestre

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MATRIC1_ListaxSemestreCicloEspecialidad";
                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@in_ciclo", ciclo);
                Comnota3.Parameters.AddWithValue("@in_especialidad", especialidad);
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

            return data;

        }


        public DataTable DATA_MATRIC1_Nomina(String semestre, String ciclo,String especialidad)
        {

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MATRIC1_Nomina";
                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@in_ciclos", ciclo);
                Comnota3.Parameters.AddWithValue("@in_especialidad", especialidad);
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

            return data;
        }



        public List<Nomina_BE> Lista_DATA_MATRIC1_Nomina(String semestre, String ciclo, String especialidad, String semestre_Nuevo)
        {

            Conexion conex = new Conexion();
            List<Nomina_BE> list = new List<Nomina_BE>();

            using (MySqlConnection conn = new MySqlConnection(conex.ConexionCampusVirtual()))
            {

                MySqlCommand command = new MySqlCommand();





                command.CommandText = "sp_DATA_MATRIC1_Nomina";
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@in_semestre", semestre);
                command.Parameters.AddWithValue("@in_ciclos", ciclo);
                command.Parameters.AddWithValue("@in_especialidad", especialidad);
                command.Parameters.AddWithValue("@in_semestre_nuevo", semestre_Nuevo);
                command.Connection = conn;
                conn.Open();

                MySqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {

                    Nomina_BE alm = new Nomina_BE();

                    alm.Semestre = reader["SEMESTRE"].ToString();
                    alm.COD_ESPEC = reader["COD_ESPEC"].ToString();
                    alm.COD_ALUMNO = reader["COD_ALUMNO"].ToString();
                    alm.Condicion_Alumno = Convert.ToInt32(reader["condicion"].ToString());

                    alm.Descripcion_Estado = reader["Descripcion"].ToString();
                    alm.Edad = reader["edad"].ToString();
                    alm.Nombres = reader["nombres"].ToString();
                    alm.SEXO = reader["SEXO"].ToString();
                    alm.PAGO_MATRICULA = reader["PagoMatricula"].ToString();

                    list.Add(alm);


                }
                return list;


            }
        }



        public DataTable Listado_Alumnos_Matriculados(String semestre, String ciclo, String especialidad)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    SqlCmd.CommandText = "SP_DATA_MATRIC1_Nomina_Edita";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@in_semestre", semestre);
                    SqlCmd.Parameters.AddWithValue("@in_ciclos", ciclo);
                    SqlCmd.Parameters.AddWithValue("@in_especialidad", especialidad);
                    SqlCmd.ExecuteNonQuery();
                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        }


         public  List<Nomina_BE> Lista_DATA_MATRIC1_Edita(String semestre, String ciclo, String especialidad)
        {
            
            Conexion conex = new Conexion();
            List<Nomina_BE> list = new List<Nomina_BE>();

            using (MySqlConnection conn = new MySqlConnection(conex.ConexionCampusVirtual()))
            {

                MySqlCommand command = new MySqlCommand();


                command.CommandText = "SP_DATA_MATRIC1_Nomina_Edita";
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@in_semestre", semestre);
                command.Parameters.AddWithValue("@in_ciclos", ciclo);
                command.Parameters.AddWithValue("@in_especialidad", especialidad);
                
                command.Connection = conn;
                conn.Open();

                MySqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {

                    Nomina_BE alm = new Nomina_BE();

                    alm.Semestre = reader["SEMESTRE"].ToString();
                    alm.COD_ESPEC = reader["COD_ESPEC"].ToString();
                    alm.COD_ALUMNO = reader["COD_ALUMNO"].ToString();
                    alm.Condicion_Alumno = Convert.ToInt32(reader["condicion"].ToString());
                    alm.CICLO = reader["CICLO"].ToString();
                    alm.Descripcion_Estado = reader["Descripcion"].ToString();
                    alm.Edad = reader["edad"].ToString();
                    alm.Nombres = reader["nombres"].ToString();
                    alm.Usuario_Registro = reader["Usuario_Registro"].ToString();
                    alm.Fecha_Registro =Convert.ToDateTime(reader["Fecha_Registro"].ToString());
                    alm.ObservacionRD = reader["ObservacionRD"].ToString();
                    alm.SEXO = reader["SEXO"].ToString();
                    alm.PAGO_MATRICULA = reader["PagoMatricula"].ToString();
                    alm.Usuario_Modifica = reader["Usuario_Modifica"].ToString();
                    alm.Fecha_Modifica = Convert.ToDateTime(reader["Fecha_Modifica"].ToString());
                    alm.GRUPO = reader["GRUPO"].ToString();
                    alm.GRUPO_DESCRIPCION = reader["GRUPO_DESCRIPCION"].ToString();
                   
                    list.Add(alm);
                    

                }
                return list;

                
            }
           
           

        }


         public DataTable DATA_MATRIC1_Nomina_Edita_DATATABLE(String semestre, String ciclo, String especialidad)
         {
             //Lista todas las especialidades de la tabla data_notas

             String cadena = "";
             Conexion conex = new Conexion();
             MySqlCommand Comnota3 = new MySqlCommand();
             MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
             DataTable data = new DataTable();
             MySqlConnection conexion = new MySqlConnection();
             cadena = conex.ConexionCampusVirtual();

             conexion.ConnectionString = cadena;
             try
             {
                 conexion.Open();
                 Comnota3.CommandText = "SP_DATA_MATRIC1_Nomina_Edita";
                 Comnota3.CommandType = CommandType.StoredProcedure;
                 Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                 Comnota3.Parameters.AddWithValue("@in_ciclos", ciclo);
                 Comnota3.Parameters.AddWithValue("@in_especialidad", especialidad);
                
                 Comnota3.CommandType = CommandType.StoredProcedure;
                 Comnota3.Connection = conexion;

                 adpnota3 = new MySqlDataAdapter(Comnota3);
                 adpnota3.Fill(data);


             }
             catch (Exception ex)
             {
                 throw ex;

             }

             finally
             {

                 conexion.Close();
             }

             return data;

         }

        public List<Nomina_BE> DATA_MATRIC1_Lista_INGRESANTES(String semestre, String especialidad)
        {

                      
             Conexion conex = new Conexion();
            List<Nomina_BE> list = new List<Nomina_BE>();

            using (MySqlConnection conn = new MySqlConnection(conex.ConexionCampusVirtual()))
            {

                MySqlCommand command = new MySqlCommand();





                command.CommandText = "sp_DATA_MATRIC1_Lista_INGRESANTES";
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@in_semestre", semestre);

                command.Parameters.AddWithValue("@in_especialidad", especialidad);
                command.Connection = conn;
                conn.Open();

                MySqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {

                    Nomina_BE alm = new Nomina_BE();

                    alm.Semestre = reader["SEMESTRE"].ToString();
                    alm.COD_ESPEC = reader["COD_ESPEC"].ToString();
                    alm.COD_ALUMNO = reader["COD_ALUMNO"].ToString();
                    alm.Condicion_Alumno = Convert.ToInt32(reader["condicion"].ToString());

                    alm.Descripcion_Estado = reader["Descripcion"].ToString();
                    alm.Edad = reader["edad"].ToString();
                    alm.Nombres = reader["nombres"].ToString();
                    alm.SEXO = reader["SEXO"].ToString();


                    list.Add(alm);


                }
                return list;
            }

        }


        public DataTable DATA_MATRIC1_AgregaAlumnos(String semestre, String ciclo, String especialidad,String semestre_nuevo,String codigo)
        {

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            MySqlDataAdapter adpnota3 = new MySqlDataAdapter();
            DataTable data = new DataTable();
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MATRIC1_AgregaAlumnos";
                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@in_ciclos", ciclo);
                Comnota3.Parameters.AddWithValue("@in_especialidad", especialidad);
                Comnota3.Parameters.AddWithValue("@in_semestre_nuevo", semestre_nuevo);
                Comnota3.Parameters.AddWithValue("@in_Cod_Alumno", codigo);
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                adpnota3 = new MySqlDataAdapter(Comnota3);
                adpnota3.Fill(data);


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

            return data;
        }



        public void DATA_MATRIC1_Inserta_Nomina
                                                (
                                                    String semestre, 
                                                    String cod_espec, String ciclo,
                                                     String cod_secc, String cod_alumno,
                                                    String condicion, String num_matricula,
                                                    String estado,String flag_confirmado,
                                                    String Usuario_Registra , DateTime fecha_registro,String RD
                                                )
        {

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
            
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MATRIC1_Inserta_Nomina";
                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@in_cod_espec", cod_espec);
                Comnota3.Parameters.AddWithValue("@in_ciclo", ciclo);
                Comnota3.Parameters.AddWithValue("@in_cod_secc", cod_secc);
                Comnota3.Parameters.AddWithValue("@in_cod_alumno", cod_alumno);
                Comnota3.Parameters.AddWithValue("@in_condicion", condicion);
                Comnota3.Parameters.AddWithValue("@in_num_matricula", num_matricula);
                Comnota3.Parameters.AddWithValue("@in_estado", estado);
                Comnota3.Parameters.AddWithValue("@in_flag_confirmado", flag_confirmado);
                Comnota3.Parameters.AddWithValue("@in_usuario_registro", Usuario_Registra);
                Comnota3.Parameters.AddWithValue("@in_fecha_registro", fecha_registro);
                Comnota3.Parameters.AddWithValue("@in_rd", RD);

                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                Comnota3.ExecuteNonQuery();


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

           
        }


        public void  DATA_MATRIC1_EliminaAlumno(String cod_alumno,String semestre, String ciclo, String especialidad)
        {

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();
           
            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MATRIC1_EliminaAlumno";
                Comnota3.Parameters.AddWithValue("@in_cod_alumno", cod_alumno);
                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@cod_espec", especialidad);
                Comnota3.Parameters.AddWithValue("@ciclo", ciclo);
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                Comnota3.ExecuteNonQuery();

            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }

           
        }


        public void DATA_MATRIC_Elimina_Nomina( String semestre, String ciclo, String especialidad)
        {

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();

            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MATRIC_Elimina_Nomina";

                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@in_ciclos", ciclo);
                Comnota3.Parameters.AddWithValue("@in_especialidad", especialidad);
                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                Comnota3.ExecuteNonQuery();

            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }


        }

        public void DATA_MATRIC1_Inserta_Nomina_Modifica
                                                (
                                                    String semestre,
                                                    String cod_espec, String ciclo,
                                                     String cod_secc, String cod_alumno,
                                                    String condicion, String num_matricula,
                                                    String estado, String flag_confirmado,
                                                    String Usuario_Registra, DateTime fecha_registro,
                                                    String Usuario_Modifica, DateTime fecha_Modifica,String RD
                                                )
        {

            String cadena = "";
            Conexion conex = new Conexion();
            MySqlCommand Comnota3 = new MySqlCommand();

            MySqlConnection conexion = new MySqlConnection();
            cadena = conex.ConexionCampusVirtual();

            conexion.ConnectionString = cadena;
            try
            {
                conexion.Open();
                Comnota3.CommandText = "sp_DATA_MATRIC1_Inserta_Nomina_Modifica";
                Comnota3.Parameters.AddWithValue("@in_semestre", semestre);
                Comnota3.Parameters.AddWithValue("@in_cod_espec", cod_espec);
                Comnota3.Parameters.AddWithValue("@in_ciclo", ciclo);
                Comnota3.Parameters.AddWithValue("@in_cod_secc", cod_secc);
                Comnota3.Parameters.AddWithValue("@in_cod_alumno", cod_alumno);
                Comnota3.Parameters.AddWithValue("@in_condicion", condicion);
                Comnota3.Parameters.AddWithValue("@in_num_matricula", num_matricula);
                Comnota3.Parameters.AddWithValue("@in_estado", estado);
                Comnota3.Parameters.AddWithValue("@in_flag_confirmado", flag_confirmado);
                Comnota3.Parameters.AddWithValue("@in_usuario_registro", Usuario_Registra);
                Comnota3.Parameters.AddWithValue("@in_fecha_registro", fecha_registro);
                Comnota3.Parameters.AddWithValue("@in_usuario_modifica", Usuario_Modifica);
                Comnota3.Parameters.AddWithValue("@in_fecha_modifica", fecha_Modifica);
                Comnota3.Parameters.AddWithValue("@in_RD", RD);

                Comnota3.CommandType = CommandType.StoredProcedure;
                Comnota3.Connection = conexion;

                Comnota3.ExecuteNonQuery();


            }
            catch (Exception ex)
            {
                throw ex;

            }

            finally
            {

                conexion.Close();
            }


        }



        //TO-TEST:
        public DataTable DATA_MATRIC1_ListaAlumnosEspecialidadvsCiclos_xSemestre(string semestre)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    SqlCmd.CommandText = "sp_ListadoAlumnosEspecvsCiclos_xSemestre";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@in_semestre", semestre);
                    SqlCmd.ExecuteNonQuery();

                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        }



        public DataTable BusquedaAlumnosListado(string Condicion)
        {
            using (ISession Sesion = m_SessionFactory.OpenSession())
            {
                using (ITransaction Trans = Sesion.BeginTransaction())
                {
                    MySqlCommand SqlCmd = new MySqlCommand();
                    SqlCmd.Connection = (MySqlConnection)Sesion.Connection;
                    Trans.Enlist(SqlCmd);
                    SqlCmd.CommandText = "sp_BusquedaAlumno";
                    SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                    SqlCmd.Parameters.AddWithValue("@Condicion", Condicion);
                    SqlCmd.ExecuteNonQuery();

                    MySqlDataAdapter da = new MySqlDataAdapter(SqlCmd);
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    Trans.Commit();
                    return dt;
                }
            }
        }


    }

}
